Special characters termed flags, may be used to define the points where datagrams are to start and end in transmitted and received data streams.
The methodology of the standard in most common protocols is called the above-mentioned HDLC, defining such flags by a special character called 7e. If the character 7e is part of a received datagram, however, the receiver would not know how to distinguish such a flag within a packet and therefore may erroneously interpret the packet as actually two separate packets on either side thereof. The HDLC protocol, therefore, suggests that if the flag character 7e is within the packet stream, an escape character 7d be inserted and appended with the flag character 7e. In the event, moreover, that the letter 7d is already itself inside the packet stream, a further escape character 7b must be inserted to append with 7d.
On the data transmission end, a capability is provided for thus inserting escape characters for special ACCM (Asynchronous Control Character Map) bytes and/or inter-flag bytes in the data stream. Currently this is achieved on a traditional byte-by-byte basis because at high speeds, the time required to do HDLC functions gets very small. A byte time for an OC48 wire, for example, is 3 nanoseconds making comparing and inserting very difficult. The problems with such mechanisms in encoding these escape characters at the transmitter and in detecting these escape characters in reception at very high speeds has been challenging, if not almost impossible, using this current one byte at a time processing technique. Such can allow data streams up to about 100-200 megabits but beyond that it runs short of time in order to process the escape characters as in the inserting and/or deleting of escape characters, on packets that flow at very, very high speeds well beyond the normal OC12, OC48, OC192 respective 0.622 gigabit, 2.4 gigabit or 10 gigabit rates. The prior art actually uses serial streams of data, converting them into bytes and then operating one byte at a time, providing only an advantage factor of 1/8.sup.th of the wire speed. If the wire speed is at 1 gigahertz, for example, running at 1/8 the clock is 125 megahertz, and trying to add or delete data at 125 megahertz is a difficult task. It becomes increasingly difficult to process data at 2 bytes at a time or 3 bytes at a time with such conventional techniques.
The present invention, on the other hand, through operating with the input serial data streams divided into smaller groups of data and applied in a parallel fashion, as later detailed, to a multilane highway of input data highway and escape highway matrix busses, now enables the processing of data for HDLC at a much wider bus--instead of just 8 bits, processing at 64, 128, 256, etc. bits at a time, inserting and/or deleting escape characters.
Having successive smaller data groups fed in parallel, means running N.times.8 as slow as conventional wire speed. With a wire speed of 10 gigabytes and 8 FIFO's, for example, then the 10 gigabytes are divided by 64--the data being processed at the order of 40-50 megahertz. This makes the HDLC coding much simpler, and the same algorithm can then scale at much higher speeds by increasing the number N.
The novel algorithm technique of the invention, indeed, enables processing multiple bytes in but one clock time, and with the clock rate low compared to the data rate.